import {
  Airplay,
  ALargeSmall,
  AlarmClock,
  AlertCircle,
  AlertOctagon,
  AlertTriangle,
  AlignJustify,
  AlignLeft,
  AlignRight,
  Angry,
  Annoyed,
  Aperture,
  Apple,
  AppWindow,
  Archive,
  AreaChart,
  Armchair,
  ArrowDownCircle,
  ArrowLeftCircle,
  ArrowRight,
  ArrowRightCircle,
  ArrowUpCircle,
  ArrowUpRightSquare,
  Asterisk,
  AsteriskSquare,
  AtSign,
  AudioLines,
  AudioWaveform,
  Award,
  Axe,
  Baby,
  Beef,
  Beer,
  Bell,
  Bike,
  Biohazard,
  Bird,
  Bitcoin,
  BookOpenText,
  BookUser,
  BoxSelect,
  CalendarClock,
  CalendarDays,
  CalendarHeart,
  Camera,
  Candy,
  Car,
  Carrot,
  Cat,
  Check,
  CheckCheck,
  Cherry,
  ChevronLeft,
  ChevronRight,
  Chrome,
  CircleDollarSign,
  CircleUser,
  CircleUserRound,
  ClipboardCheck,
  Code,
  Code2,
  Codepen,
  Codesandbox,
  CodeSquare,
  Compass,
  ConciergeBell,
  Contact,
  Contact2,
  Container,
  Copy,
  CreditCard,
  Crown,
  Database,
  Dessert,
  Dice6,
  Dog,
  DollarSign,
  Download,
  DownloadCloud,
  DraftingCompass,
  Dribbble,
  Drum,
  Dumbbell,
  Euro,
  Eye,
  Facebook,
  Fan,
  Feather,
  Figma,
  File,
  FileAudio2,
  FileCode,
  FileCode2,
  FileCog,
  FileHeart,
  FileImage,
  FileJson,
  FileJson2,
  FileLineChart,
  FileLock,
  FileLock2,
  FileMusic,
  FilePen,
  FilePieChart,
  FileSearch,
  FileSpreadsheet,
  FileSymlink,
  FileTerminal,
  FileText,
  FileVideo,
  FileVideo2,
  FileVolume,
  Fingerprint,
  Fish,
  FishSymbol,
  Flame,
  FlaskRound,
  Folder,
  FolderDot,
  FolderGit,
  FolderGit2,
  FolderHeart,
  FolderKanban,
  FolderKey,
  FolderLock,
  FolderTree,
  Frown,
  FunctionSquare,
  Gamepad2,
  GanttChartSquare,
  Gauge,
  GaugeCircle,
  Gem,
  Ghost,
  Gift,
  Github,
  Gitlab,
  Globe,
  Globe2,
  Goal,
  GraduationCap,
  Hammer,
  HandMetal,
  HardDriveDownload,
  HardDriveUpload,
  Hash,
  Heart,
  HeartHandshake,
  HelpCircle,
  Highlighter,
  Hourglass,
  Image,
  ImageDown,
  ImageIcon,
  Import,
  Inbox,
  InfinityIcon,
  Instagram,
  Joystick,
  KanbanSquare,
  Key,
  KeySquare,
  Lamp,
  LampDesk,
  LayoutList,
  LeafyGreen,
  LifeBuoy,
  Linkedin,
  List,
  ListChecks,
  ListCollapse,
  ListMusic,
  ListOrdered,
  ListTodo,
  ListTree,
  Loader2,
  LocateFixed,
  Lock,
  LockKeyhole,
  LucideProps,
  Magnet,
  Mail,
  Mails,
  Map,
  MapPin,
  Martini,
  Medal,
  Megaphone,
  Meh,
  MessageCircleWarning,
  MessageSquareWarning,
  Mic,
  Milestone,
  Moon,
  MoreVertical,
  Mountain,
  MountainSnow,
  Move3d,
  MSquare,
  Music,
  Music2,
  Network,
  Newspaper,
  Nfc,
  Notebook,
  NotebookTabs,
  NotepadText,
  Package,
  PackageOpen,
  Paperclip,
  ParkingCircle,
  ParkingSquare,
  PartyPopper,
  PersonStanding,
  PieChart,
  Pin,
  PinOff,
  Pizza,
  Plane,
  Play,
  Plug,
  Plug2,
  PlugZap,
  PlugZap2,
  Plus,
  Presentation,
  Puzzle,
  Quote,
  Rabbit,
  Radiation,
  Radio,
  RadioTower,
  Ribbon,
  Rocket,
  Router,
  Salad,
  Satellite,
  SatelliteDish,
  Scroll,
  ScrollText,
  Send,
  SendHorizontal,
  Settings,
  Sheet,
  Shield,
  ShieldCheck,
  ShieldHalf,
  ShoppingCart,
  Skull,
  Slack,
  SlidersHorizontal,
  Smartphone,
  SmartphoneNfc,
  Smile,
  Spade,
  Sparkles,
  Speech,
  SprayCan,
  SquareMousePointer,
  SquareUser,
  SquareUserRound,
  Star,
  SunMedium,
  Swords,
  Tag,
  ToyBrick,
  TrafficCone,
  TramFront,
  Trash,
  Trello,
  Trophy,
  Truck,
  Twitch,
  Twitter,
  Upload,
  UploadCloud,
  User,
  UserRound,
  VenetianMask,
  Voicemail,
  Wand,
  Wifi,
  X,
  Youtube,
} from 'lucide-react'

export const CUSTOM_ICON_NAMES = [
  'post',
  'page',
  'media',
  'creditcard',
  'tiktok',
  'kanbanSquare',
  'arrowRight',
  'twitter',
  'facebook',
  'linkedin',
  'twitch',
  'youtube',
  'instagram',
  'slack',
  'dribbble',
  'trello',
  'chrome',
  'codePen',
  'codesandbox',
  'figma',
  'send',
  'check',
  'check2',
  'copy',
  'help',
  'pin',
  'copyDone',
  'star',
  'list',
  'list2',
  'list3',
  'list5',
  'listmusic',
  'listchecks',
  'listCollapse',
  'listOrdered',
  'listTree',
  'listToDo',
  'scrollText',
  'audioLines',
  'audioWaveform',
  'mic',
  'mails',
  'atSign',
  'mail',
  'inbox',
  'archive',
  'container',
  'sendHorizontal',
  'contact',
  'contact2',
  'userRound',
  'circleUser',
  'userSquare',
  'squareUser',
  'userRound2',
  'user',
  'baby',
  'notebook',
  'paperclip',
  'bookUser',
  'nfc',
  'smartphoneNfc',
  'smartphone',
  'graduationCap',
  'apple2',
  'appWindows',
  'alertTriangle',
  'alertCircle',
  'alarmClock',
  'alertOctagon',
  'voicemail',
  'calendarClock',
  'calendarDays',
  'calendarHeart',
  'angry',
  'annoyed',
  'frown',
  'meh',
  'smile',
  'eye',
  'fan',
  'handMetal',
  'heartHandshake',
  'heart',
  'leafyGreen',
  'ribbon',
  'ralad',
  'crown',
  'camera',
  'fingerprint',
  'flame',
  'database',
  'dog',
  'cat',
  'bird',
  'rabbit',
  'fish',
  'fishSymbol',
  'carrot',
  'candy',
  'cherry',
  'dice',
  'biohazard',
  'satellite',
  'satelliteDish',
  'radioTower',
  'radio',
  'wifi',
  'router',
  'bitcoin',
  'dollarSign',
  'circleDollarSign',
  'euro',
  'drum',
  'medal',
  'beer',
  'beef',
  'bell',
  'draftingCompass',
  'trophy',
  'gaugeCircle',
  'gauge',
  'bike',
  'award',
  'trafficCone',
  'tramFront',
  'truck',
  'plane',
  'car',
  'dumbbell',
  'parkingCircle',
  'parkingSquare',
  'msquare',
  'partyPopper',
  'conciergeBell',
  'aperture',
  'areaChart',
  'armchair',
  'arrowUpRightSquare',
  'asteriskSquare',
  'asterisk',
  'keySquare',
  'key',
  'lockKeyhole',
  'lock',
  'shieldCheck',
  'shield',
  'compass',
  'shieldHalf',
  'presentation',
  'folder',
  'folderHeart',
  'folderTree',
  'folderDot',
  'folderGit',
  'folderGit2',
  'folderKey',
  'folderLock',
  'folderKanban',
  'file',
  'fileCode',
  'fileText',
  'fileCode2',
  'fileJson',
  'fileJson2',
  'fileTerminal',
  'fileVideo',
  'fileVideo2',
  'fileVolume',
  'fileHeart',
  'fileImage',
  'fileLock2',
  'fileLock',
  'fileSpreadsheet',
  'fileCog',
  'fileMusic',
  'filePieChart',
  'filePen',
  'fileSearch',
  'fileLineChart',
  'fileSymlink',
  'driveDownload',
  'driveUpload',
  'imageDown',
  'import',
  'music',
  'music2',
  'sheet',
  'pieChart',
  'packageOpen',
  'package',
  'gamepad2',
  'joystick',
  'hammer',
  'lampDesk',
  'lamp',
  'bookOpen',
  'airplay',
  'code2',
  'code',
  'codeSquare',
  'functionSquare',
  'arrowDownCircle',
  'arrowUpCircle',
  'arrowLeftCircle',
  'arrowRightCircle',
  'gem',
  'ghost',
  'rocket',
  'skull',
  'sparkles',
  'puzzle',
  'messageWarning',
  'messageWarning2',
  'dessert',
  'pizza',
  'venetianMask',
  'wand',
  'toyBrick',
  'mountain',
  'milestone',
  'feather',
  'flaskRound',
  'goal',
  'hourglass',
  'axe',
  'gitlab',
  'github2',
  'sprayCcan',
  'gift',
  'swords',
  'fileAudio2',
  'downloadCloud',
  'uploadCloud',
  'upload',
  'download',
  'globe',
  'globe2',
  'hash',
  'highlighter',
  'infinity',
  'lifeBuoy',
  'locateFixed',
  'mapPin',
  'map',
  'magnet',
  'martini',
  'mountainSnow',
  'mousePointer',
  'move3d',
  'network',
  'newspaper',
  'notebook2',
  'notepadText',
  'megaphone',
  'ganttChartSquare',
  'personStanding',
  'plug2',
  'play',
  'plug',
  'plugZap2',
  'plugZap',
  'radiation',
  'quote',
  'tag',
  'speech',
  'spade',
  'shoppingCart',
  'slidersHorizontal',
  'discord',
  'gitHub',
  'npm',
  'pnpm',
  'node',
  'react',
  'tailwind',
  'google',
  'apple',
  'paypal',
] as const

export const Icons = {
  logo: (props: LucideProps) => (
    <svg
      viewBox="0 0 24 24"
      fill="currentColor"
      stroke="currentColor"
      strokeWidth="2"
      strokeLinecap="round"
      strokeLinejoin="round"
      {...props}
    >
      <circle cx="12" cy="12" r="10"></circle>
    </svg>
  ),
  close: X,
  spinner: Loader2,
  chevronLeft: ChevronLeft,
  chevronRight: ChevronRight,
  trash: Trash,
  post: FileText,
  page: File,
  media: Image,
  settings: Settings,
  ellipsis: MoreVertical,
  add: Plus,
  warning: AlertTriangle,
  arrowRight: ArrowRight,
  help: HelpCircle,
  twitter: Twitter,
  check: Check,
  check2: CheckCheck,
  copy: Copy,
  pin: Pin,
  pinoff: PinOff,
  copyDone: ClipboardCheck,
  sun: SunMedium,
  moon: Moon,
  facebook: Facebook,
  linkedin: Linkedin,
  twitch: Twitch,
  youtube: Youtube,
  instagram: Instagram,
  slack: Slack,
  dribbble: Dribbble,
  trello: Trello,
  star: Star,
  chrome: Chrome,
  codePen: Codepen,
  codesandbox: Codesandbox,
  figma: Figma,
  image: ImageIcon,
  list: LayoutList,
  list2: List,
  list3: AlignLeft,
  list4: AlignRight,
  list5: AlignJustify,
  listmusic: ListMusic,
  listchecks: ListChecks,
  listCollapse: ListCollapse,
  listOrdered: ListOrdered,
  listTree: ListTree,
  listToDo: ListTodo,
  scrollText: ScrollText,
  scroll: Scroll,
  audioLines: AudioLines,
  audioWaveform: AudioWaveform,
  mic: Mic,
  mails: Mails,
  atSign: AtSign,
  mail: Mail,
  inbox: Inbox,
  archive: Archive,
  container: Container,
  sendHorizontal: SendHorizontal,
  send: Send,
  contact: Contact,
  contact2: Contact2,
  userRound: CircleUserRound,
  circleUser: CircleUser,
  userSquare: SquareUserRound,
  squareUser: SquareUser,
  userRound2: UserRound,
  user: User,
  baby: Baby,
  notebook: NotebookTabs,
  paperclip: Paperclip,
  bookUser: BookUser,
  nfc: Nfc,
  smartphoneNfc: SmartphoneNfc,
  smartphone: Smartphone,
  graduationCap: GraduationCap,
  apple2: Apple,
  appWindows: AppWindow,
  aLargeSmall: ALargeSmall,
  alertTriangle: AlertTriangle,
  alertCircle: AlertCircle,
  alarmClock: AlarmClock,
  alertOctagon: AlertOctagon,
  voicemail: Voicemail,
  calendarClock: CalendarClock,
  calendarDays: CalendarDays,
  calendarHeart: CalendarHeart,
  angry: Angry,
  annoyed: Annoyed,
  frown: Frown,
  meh: Meh,
  smile: Smile,
  eye: Eye,
  fan: Fan,
  handMetal: HandMetal,
  heartHandshake: HeartHandshake,
  heart: Heart,
  leafyGreen: LeafyGreen,
  ribbon: Ribbon,
  ralad: Salad,
  crown: Crown,
  camera: Camera,
  fingerprint: Fingerprint,
  flame: Flame,
  database: Database,
  dog: Dog,
  cat: Cat,
  bird: Bird,
  rabbit: Rabbit,
  fish: Fish,
  fishSymbol: FishSymbol,
  carrot: Carrot,
  candy: Candy,
  cherry: Cherry,
  dice: Dice6,
  biohazard: Biohazard,
  satellite: Satellite,
  satelliteDish: SatelliteDish,
  radioTower: RadioTower,
  radio: Radio,
  wifi: Wifi,
  router: Router,
  bitcoin: Bitcoin,
  dollarSign: DollarSign,
  circleDollarSign: CircleDollarSign,
  euro: Euro,
  drum: Drum,
  medal: Medal,
  beer: Beer,
  beef: Beef,
  bell: Bell,
  draftingCompass: DraftingCompass,
  trophy: Trophy,
  gaugeCircle: GaugeCircle,
  gauge: Gauge,
  bike: Bike,
  award: Award,
  trafficCone: TrafficCone,
  tramFront: TramFront,
  truck: Truck,
  plane: Plane,
  car: Car,
  dumbbell: Dumbbell,
  parkingCircle: ParkingCircle,
  parkingSquare: ParkingSquare,
  msquare: MSquare,
  partyPopper: PartyPopper,
  conciergeBell: ConciergeBell,
  aperture: Aperture,
  areaChart: AreaChart,
  armchair: Armchair,
  arrowUpRightSquare: ArrowUpRightSquare,
  asteriskSquare: AsteriskSquare,
  asterisk: Asterisk,
  keySquare: KeySquare,
  key: Key,
  lockKeyhole: LockKeyhole,
  lock: Lock,
  shieldCheck: ShieldCheck,
  shield: Shield,
  compass: Compass,
  shieldHalf: ShieldHalf,
  presentation: Presentation,
  folder: Folder,
  folderHeart: FolderHeart,
  folderTree: FolderTree,
  folderDot: FolderDot,
  folderGit: FolderGit,
  folderGit2: FolderGit2,
  folderKey: FolderKey,
  folderLock: FolderLock,
  folderKanban: FolderKanban,
  file: File,
  fileCode: FileCode,
  fileText: FileText,
  fileCode2: FileCode2,
  fileJson: FileJson,
  fileJson2: FileJson2,
  fileTerminal: FileTerminal,
  fileVideo: FileVideo,
  fileVideo2: FileVideo2,
  fileVolume: FileVolume,
  fileHeart: FileHeart,
  fileImage: FileImage,
  fileLock2: FileLock2,
  fileLock: FileLock,
  fileSpreadsheet: FileSpreadsheet,
  fileCog: FileCog,
  fileMusic: FileMusic,
  filePieChart: FilePieChart,
  filePen: FilePen,
  fileSearch: FileSearch,
  fileLineChart: FileLineChart,
  fileSymlink: FileSymlink,
  driveDownload: HardDriveDownload,
  driveUpload: HardDriveUpload,
  imageDown: ImageDown,
  import: Import,
  music: Music,
  music2: Music2,
  sheet: Sheet,
  pieChart: PieChart,
  packageOpen: PackageOpen,
  package: Package,
  gamepad2: Gamepad2,
  joystick: Joystick,
  hammer: Hammer,
  lampDesk: LampDesk,
  lamp: Lamp,
  bookOpen: BookOpenText,
  airplay: Airplay,
  code2: Code2,
  code: Code,
  codeSquare: CodeSquare,
  functionSquare: FunctionSquare,
  arrowDownCircle: ArrowDownCircle,
  arrowUpCircle: ArrowUpCircle,
  arrowLeftCircle: ArrowLeftCircle,
  arrowRightCircle: ArrowRightCircle,
  gem: Gem,
  ghost: Ghost,
  rocket: Rocket,
  skull: Skull,
  sparkles: Sparkles,
  puzzle: Puzzle,
  messageWarning: MessageCircleWarning,
  messageWarning2: MessageSquareWarning,
  dessert: Dessert,
  pizza: Pizza,
  venetianMask: VenetianMask,
  wand: Wand,
  toyBrick: ToyBrick,
  mountain: Mountain,
  milestone: Milestone,
  feather: Feather,
  flaskRound: FlaskRound,
  goal: Goal,
  hourglass: Hourglass,
  axe: Axe,
  gitlab: Gitlab,
  github2: Github,
  sprayCcan: SprayCan,
  gift: Gift,
  swords: Swords,
  fileAudio2: FileAudio2,
  downloadCloud: DownloadCloud,
  uploadCloud: UploadCloud,
  upload: Upload,
  download: Download,
  globe: Globe,
  globe2: Globe2,
  hash: Hash,
  highlighter: Highlighter,
  infinity: InfinityIcon,
  lifeBuoy: LifeBuoy,
  locateFixed: LocateFixed,
  mapPin: MapPin,
  map: Map,
  magnet: Magnet,
  martini: Martini,
  mountainSnow: MountainSnow,
  mousePointer: SquareMousePointer,
  move3d: Move3d,
  network: Network,
  newspaper: Newspaper,
  notebook2: Notebook,
  notepadText: NotepadText,
  megaphone: Megaphone,
  ganttChartSquare: GanttChartSquare,
  personStanding: PersonStanding,
  plug2: Plug2,
  play: Play,
  plug: Plug,
  plugZap2: PlugZap2,
  plugZap: PlugZap,
  radiation: Radiation,
  quote: Quote,
  tag: Tag,
  speech: Speech,
  spade: Spade,
  shoppingCart: ShoppingCart,
  slidersHorizontal: SlidersHorizontal,
  kanbanSquare: KanbanSquare,
  creditcard: (props: LucideProps) => (
    <svg
      viewBox="0 0 24 24"
      fill="currentColor"
      width={props.size}
      height={props.size}
      {...props}
    >
      <path d="M21.278 3.054H2.722c-.614.003-1.202.249-1.636.683-.434.434-.68 1.022-.683 1.636v13.254c.003.614.249 1.202.683 1.636.434.434 1.022.68 1.636.683h18.556a2.3306 2.3306 0 0 0 1.636-.683c.434-.434.68-1.022.683-1.636V5.373a2.3306 2.3306 0 0 0-.683-1.636 2.3306 2.3306 0 0 0-1.636-.683ZM2.722 5.042h18.556c.088 0 .172.035.234.097.062.062.097.146.097.234v2.982H2.391V5.373c0-.088.035-.172.097-.234a.3307.3307 0 0 1 .234-.097Zm18.556 13.916H2.722a.3307.3307 0 0 1-.234-.097.3307.3307 0 0 1-.097-.234v-8.284h19.218v8.284c0 .088-.035.172-.097.234a.3307.3307 0 0 1-.234.097Z" />
      <path d="M8.055 14.438H6.204c-.245 0-.48.097-.654.271a.9266.9266 0 0 0-.271.654c0 .245.098.481.271.654.174.174.409.271.654.271h1.851c.246 0 .481-.097.655-.271.173-.173.27-.409.27-.654 0-.245-.097-.481-.27-.654a.9247.9247 0 0 0-.655-.271Zm4.6 0h-1.851c-.245 0-.48.097-.654.271a.9266.9266 0 0 0-.271.654c0 .245.098.481.271.654.174.174.409.271.654.271h1.851c.246 0 .481-.097.655-.271.173-.173.27-.409.27-.654 0-.245-.097-.481-.27-.654a.9247.9247 0 0 0-.655-.271Z" />
    </svg>
  ),
  discord: (props: LucideProps) => (
    <svg viewBox="0 0 127.14 96.36" width={props.size} height={props.size} {...props}>
      <path
        fill="currentColor"
        d="M107.7,8.07A105.15,105.15,0,0,0,81.47,0a72.06,72.06,0,0,0-3.36,6.83A97.68,97.68,0,0,0,49,6.83,72.37,72.37,0,0,0,45.64,0,105.89,105.89,0,0,0,19.39,8.09C2.79,32.65-1.71,56.6.54,80.21h0A105.73,105.73,0,0,0,32.71,96.36,77.7,77.7,0,0,0,39.6,85.25a68.42,68.42,0,0,1-10.85-5.18c.91-.66,1.8-1.34,2.66-2a75.57,75.57,0,0,0,64.32,0c.87.71,1.76,1.39,2.66,2a68.68,68.68,0,0,1-10.87,5.19,77,77,0,0,0,6.89,11.1A105.25,105.25,0,0,0,126.6,80.22h0C129.24,52.84,122.09,29.11,107.7,8.07ZM42.45,65.69C36.18,65.69,31,60,31,53s5-12.74,11.43-12.74S54,46,53.89,53,48.84,65.69,42.45,65.69Zm42.24,0C78.41,65.69,73.25,60,73.25,53s5-12.74,11.44-12.74S96.23,46,96.12,53,91.08,65.69,84.69,65.69Z"
      />
    </svg>
  ),
  gitHub: (props: LucideProps) => (
    <svg viewBox="0 0 438.549 438.549" width={props.size} height={props.size} {...props}>
      <path
        fill="currentColor"
        d="M409.132 114.573c-19.608-33.596-46.205-60.194-79.798-79.8-33.598-19.607-70.277-29.408-110.063-29.408-39.781 0-76.472 9.804-110.063 29.408-33.596 19.605-60.192 46.204-79.8 79.8C9.803 148.168 0 184.854 0 224.63c0 47.78 13.94 90.745 41.827 128.906 27.884 38.164 63.906 64.572 108.063 79.227 5.14.954 8.945.283 11.419-1.996 2.475-2.282 3.711-5.14 3.711-8.562 0-.571-.049-5.708-.144-15.417a2549.81 2549.81 0 01-.144-25.406l-6.567 1.136c-4.187.767-9.469 1.092-15.846 1-6.374-.089-12.991-.757-19.842-1.999-6.854-1.231-13.229-4.086-19.13-8.559-5.898-4.473-10.085-10.328-12.56-17.556l-2.855-6.57c-1.903-4.374-4.899-9.233-8.992-14.559-4.093-5.331-8.232-8.945-12.419-10.848l-1.999-1.431c-1.332-.951-2.568-2.098-3.711-3.429-1.142-1.331-1.997-2.663-2.568-3.997-.572-1.335-.098-2.43 1.427-3.289 1.525-.859 4.281-1.276 8.28-1.276l5.708.853c3.807.763 8.516 3.042 14.133 6.851 5.614 3.806 10.229 8.754 13.846 14.842 4.38 7.806 9.657 13.754 15.846 17.847 6.184 4.093 12.419 6.136 18.699 6.136 6.28 0 11.704-.476 16.274-1.423 4.565-.952 8.848-2.383 12.847-4.285 1.713-12.758 6.377-22.559 13.988-29.41-10.848-1.14-20.601-2.857-29.264-5.14-8.658-2.286-17.605-5.996-26.835-11.14-9.235-5.137-16.896-11.516-22.985-19.126-6.09-7.614-11.088-17.61-14.987-29.979-3.901-12.374-5.852-26.648-5.852-42.826 0-23.035 7.52-42.637 22.557-58.817-7.044-17.318-6.379-36.732 1.997-58.24 5.52-1.715 13.706-.428 24.554 3.853 10.85 4.283 18.794 7.952 23.84 10.994 5.046 3.041 9.089 5.618 12.135 7.708 17.705-4.947 35.976-7.421 54.818-7.421s37.117 2.474 54.823 7.421l10.849-6.849c7.419-4.57 16.18-8.758 26.262-12.565 10.088-3.805 17.802-4.853 23.134-3.138 8.562 21.509 9.325 40.922 2.279 58.24 15.036 16.18 22.559 35.787 22.559 58.817 0 16.178-1.958 30.497-5.853 42.966-3.9 12.471-8.941 22.457-15.125 29.979-6.191 7.521-13.901 13.85-23.131 18.986-9.232 5.14-18.182 8.85-26.84 11.136-8.662 2.286-18.415 4.004-29.263 5.146 9.894 8.562 14.842 22.077 14.842 40.539v60.237c0 3.422 1.19 6.279 3.572 8.562 2.379 2.279 6.136 2.95 11.276 1.995 44.163-14.653 80.185-41.062 108.068-79.226 27.88-38.161 41.825-81.126 41.825-128.906-.01-39.771-9.818-76.454-29.414-110.049z"
      ></path>
    </svg>
  ),
  npm: (props: LucideProps) => (
    <svg viewBox="0 0 24 24" width={props.size} height={props.size} {...props}>
      <path
        fill="currentColor"
        d="M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z"
      />
    </svg>
  ),
  tiktok: (props: LucideProps) => (
    <svg
      viewBox="0 0 25 25"
      width={props.size}
      height={props.size}
      {...props}
      fill="none"
      stroke="currentColor"
    >
      <path
        stroke="currentColor"
        strokeWidth="1.8"
        d="M23.078 7.077v9.846c0 3.399-2.756 6.155-6.155 6.155H7.077c-3.399 0-6.155-2.756-6.155-6.155V7.077C.922 3.678 3.678.922 7.077.922h9.846c3.399 0 6.155 2.756 6.155 6.155Z"
      />
      <path
        stroke="currentColor"
        strokeWidth="1.8"
        d="M9.538 12c-2.039 0-3.692 1.653-3.692 3.693 0 2.039 1.653 3.692 3.692 3.692 2.04 0 3.693-1.653 3.693-3.692V4.615c.41 1.231 1.969 3.692 4.923 3.692"
      />
    </svg>
  ),
  pnpm: (props: LucideProps) => (
    <svg viewBox="0 0 24 24" width={props.size} height={props.size} {...props}>
      <path
        fill="currentColor"
        d="M0 0v7.5h7.5V0zm8.25 0v7.5h7.498V0zm8.25 0v7.5H24V0zM8.25 8.25v7.5h7.498v-7.5zm8.25 0v7.5H24v-7.5zM0 16.5V24h7.5v-7.5zm8.25 0V24h7.498v-7.5zm8.25 0V24H24v-7.5z"
      />
    </svg>
  ),
  node: (props: LucideProps) => (
    <svg viewBox="0 0 16 16" width={props.size} height={props.size} {...props}>
      <path
        fill="currentColor"
        d="M 8 1.0234375 C 7.736875 1.0234375 7.4742344 1.0924687 7.2402344 1.2304688 L 2.7402344 3.8789062 C 2.2832344 4.1469063 2 4.642875 2 5.171875 L 2 11.005859 C 2 11.554859 2.29925 12.059266 2.78125 12.322266 L 4.2558594 13.126953 C 4.4828594 13.250953 4.7286094 13.310547 4.9746094 13.310547 C 5.2386094 13.310547 5.4992812 13.239609 5.7382812 13.099609 C 6.1982812 12.826609 6.4726562 12.344594 6.4726562 11.808594 L 6.4726562 5.4648438 L 5.4726562 5.4648438 L 5.4726562 11.808594 C 5.4726562 12.065594 5.3025156 12.195281 5.2285156 12.238281 C 5.1555156 12.281281 4.959375 12.371047 4.734375 12.248047 L 3.2617188 11.445312 C 3.1007187 11.357312 3 11.188859 3 11.005859 L 3 5.171875 C 3 4.995875 3.0940938 4.8302344 3.2460938 4.7402344 L 7.7460938 2.0917969 C 7.9020937 1.9997969 8.0979062 2.0007969 8.2539062 2.0917969 L 12.753906 4.7402344 C 12.904906 4.8302344 13 4.995875 13 5.171875 L 13 11.009766 C 13 11.189766 12.900234 11.359219 12.740234 11.449219 L 8.2402344 13.900391 C 8.0902344 13.980391 7.9097656 13.980391 7.7597656 13.900391 L 6.8808594 13.419922 C 6.7108594 13.629922 6.5 13.810937 6.25 13.960938 C 6.17 14.010938 6.0897656 14.050078 6.0097656 14.080078 L 7.2792969 14.779297 C 7.5092969 14.899297 7.75 14.960938 8 14.960938 C 8.25 14.960938 8.4907031 14.899297 8.7207031 14.779297 L 13.220703 12.320312 C 13.700703 12.060313 14 11.559766 14 11.009766 L 14 5.171875 C 14 4.642875 13.717719 4.1469062 13.261719 3.8789062 L 8.7617188 1.2304688 C 8.5272187 1.0924688 8.263125 1.0234375 8 1.0234375 z M 9.4511719 5.3183594 C 7.8711719 5.3183594 7.0703125 5.8690781 7.0703125 6.9550781 C 7.0703125 8.1850781 8.4869687 8.3680781 9.1679688 8.4550781 C 9.2659688 8.4680781 9.352875 8.4791875 9.421875 8.4921875 L 9.7207031 8.5449219 C 10.760703 8.7189219 11 8.836875 11 9.171875 C 11 9.333875 10.999172 9.8242188 9.4511719 9.8242188 C 8.1381719 9.8242188 7.8691406 9.4346094 7.8691406 8.8496094 L 6.8691406 8.8496094 C 6.8691406 9.7516094 7.3171719 10.824219 9.4511719 10.824219 C 11.557172 10.824219 12 9.925875 12 9.171875 C 12 7.913875 10.777719 7.7076406 9.8867188 7.5566406 L 9.5996094 7.5078125 C 9.5166094 7.4928125 9.4119219 7.4788438 9.2949219 7.4648438 C 8.6589219 7.3828438 8.0703125 7.2650312 8.0703125 6.9570312 C 8.0703125 6.7340313 8.0691719 6.3193594 9.4511719 6.3183594 C 10.370172 6.3183594 10.837891 6.6207969 10.837891 7.2167969 L 11.837891 7.2167969 C 11.837891 6.2997969 11.209172 5.3183594 9.4511719 5.3183594 z"
      ></path>
    </svg>
  ),
  react: (props: LucideProps) => (
    <svg viewBox="0 0 24 24" width={props.size} height={props.size} {...props}>
      <path
        fill="currentColor"
        d="M14.23 12.004a2.236 2.236 0 0 1-2.235 2.236 2.236 2.236 0 0 1-2.236-2.236 2.236 2.236 0 0 1 2.235-2.236 2.236 2.236 0 0 1 2.236 2.236zm2.648-10.69c-1.346 0-3.107.96-4.888 2.622-1.78-1.653-3.542-2.602-4.887-2.602-.41 0-.783.093-1.106.278-1.375.793-1.683 3.264-.973 6.365C1.98 8.917 0 10.42 0 12.004c0 1.59 1.99 3.097 5.043 4.03-.704 3.113-.39 5.588.988 6.38.32.187.69.275 1.102.275 1.345 0 3.107-.96 4.888-2.624 1.78 1.654 3.542 2.603 4.887 2.603.41 0 .783-.09 1.106-.275 1.374-.792 1.683-3.263.973-6.365C22.02 15.096 24 13.59 24 12.004c0-1.59-1.99-3.097-5.043-4.032.704-3.11.39-5.587-.988-6.38-.318-.184-.688-.277-1.092-.278zm-.005 1.09v.006c.225 0 .406.044.558.127.666.382.955 1.835.73 3.704-.054.46-.142.945-.25 1.44-.96-.236-2.006-.417-3.107-.534-.66-.905-1.345-1.727-2.035-2.447 1.592-1.48 3.087-2.292 4.105-2.295zm-9.77.02c1.012 0 2.514.808 4.11 2.28-.686.72-1.37 1.537-2.02 2.442-1.107.117-2.154.298-3.113.538-.112-.49-.195-.964-.254-1.42-.23-1.868.054-3.32.714-3.707.19-.09.4-.127.563-.132zm4.882 3.05c.455.468.91.992 1.36 1.564-.44-.02-.89-.034-1.345-.034-.46 0-.915.01-1.36.034.44-.572.895-1.096 1.345-1.565zM12 8.1c.74 0 1.477.034 2.202.093.406.582.802 1.203 1.183 1.86.372.64.71 1.29 1.018 1.946-.308.655-.646 1.31-1.013 1.95-.38.66-.773 1.288-1.18 1.87-.728.063-1.466.098-2.21.098-.74 0-1.477-.035-2.202-.093-.406-.582-.802-1.204-1.183-1.86-.372-.64-.71-1.29-1.018-1.946.303-.657.646-1.313 1.013-1.954.38-.66.773-1.286 1.18-1.868.728-.064 1.466-.098 2.21-.098zm-3.635.254c-.24.377-.48.763-.704 1.16-.225.39-.435.782-.635 1.174-.265-.656-.49-1.31-.676-1.947.64-.15 1.315-.283 2.015-.386zm7.26 0c.695.103 1.365.23 2.006.387-.18.632-.405 1.282-.66 1.933-.2-.39-.41-.783-.64-1.174-.225-.392-.465-.774-.705-1.146zm3.063.675c.484.15.944.317 1.375.498 1.732.74 2.852 1.708 2.852 2.476-.005.768-1.125 1.74-2.857 2.475-.42.18-.88.342-1.355.493-.28-.958-.646-1.956-1.1-2.98.45-1.017.81-2.01 1.085-2.964zm-13.395.004c.278.96.645 1.957 1.1 2.98-.45 1.017-.812 2.01-1.086 2.964-.484-.15-.944-.318-1.37-.5-1.732-.737-2.852-1.706-2.852-2.474 0-.768 1.12-1.742 2.852-2.476.42-.18.88-.342 1.356-.494zm11.678 4.28c.265.657.49 1.312.676 1.948-.64.157-1.316.29-2.016.39.24-.375.48-.762.705-1.158.225-.39.435-.788.636-1.18zm-9.945.02c.2.392.41.783.64 1.175.23.39.465.772.705 1.143-.695-.102-1.365-.23-2.006-.386.18-.63.406-1.282.66-1.933zM17.92 16.32c.112.493.2.968.254 1.423.23 1.868-.054 3.32-.714 3.708-.147.09-.338.128-.563.128-1.012 0-2.514-.807-4.11-2.28.686-.72 1.37-1.536 2.02-2.44 1.107-.118 2.154-.3 3.113-.54zm-11.83.01c.96.234 2.006.415 3.107.532.66.905 1.345 1.727 2.035 2.446-1.595 1.483-3.092 2.295-4.11 2.295-.22-.005-.406-.05-.553-.132-.666-.38-.955-1.834-.73-3.703.054-.46.142-.944.25-1.438zm4.56.64c.44.02.89.034 1.345.034.46 0 .915-.01 1.36-.034-.44.572-.895 1.095-1.345 1.565-.455-.47-.91-.993-1.36-1.565z"
      />
    </svg>
  ),
  tailwind: (props: LucideProps) => (
    <svg viewBox="0 0 24 24" width={props.size} height={props.size} {...props}>
      <path
        fill="currentColor"
        d="M12.001,4.8c-3.2,0-5.2,1.6-6,4.8c1.2-1.6,2.6-2.2,4.2-1.8c0.913,0.228,1.565,0.89,2.288,1.624 C13.666,10.618,15.027,12,18.001,12c3.2,0,5.2-1.6,6-4.8c-1.2,1.6-2.6,2.2-4.2,1.8c-0.913-0.228-1.565-0.89-2.288-1.624 C16.337,6.182,14.976,4.8,12.001,4.8z M6.001,12c-3.2,0-5.2,1.6-6,4.8c1.2-1.6,2.6-2.2,4.2-1.8c0.913,0.228,1.565,0.89,2.288,1.624 c1.177,1.194,2.538,2.576,5.512,2.576c3.2,0,5.2-1.6,6-4.8c-1.2,1.6-2.6,2.2-4.2,1.8c-0.913-0.228-1.565-0.89-2.288-1.624 C10.337,13.382,8.976,12,6.001,12z"
      />
    </svg>
  ),
  google: (props: LucideProps) => (
    <svg role="img" viewBox="0 0 24 24" width={props.size} height={props.size} {...props}>
      <path
        fill="currentColor"
        d="M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z"
      />
    </svg>
  ),
  apple: (props: LucideProps) => (
    <svg role="img" viewBox="0 0 24 24" width={props.size} height={props.size} {...props}>
      <path
        d="M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701"
        fill="currentColor"
      />
    </svg>
  ),
  paypal: (props: LucideProps) => (
    <svg viewBox="0 0 48 48" width={props.size} height={props.size} {...props}>
      <path
        fill="currentColor"
        d="M 12.841797 3.9980469 C 11.545957 3.9980469 10.408459 4.9201856 10.140625 6.1875 A 1.50015 1.50015 0 0 0 10.140625 6.1894531 L 4.3105469 33.863281 A 1.50015 1.50015 0 0 0 4.3105469 33.865234 C 3.9778831 35.447651 5.2380138 37 6.8554688 37 L 13.125 37 L 12.310547 40.865234 C 11.976672 42.448822 13.234312 44 14.853516 44 L 22.5 44 A 1.50015 1.50015 0 0 0 23.96875 42.808594 L 26.140625 32.5 L 32.230469 32.5 C 37.754148 32.5 42.547425 28.631159 43.714844 23.232422 L 43.876953 22.478516 C 45.063149 16.990425 41.185502 11.734909 35.767578 11.072266 C 34.701026 7.0840748 31.068127 3.9980469 26.613281 3.9980469 L 21.273438 3.9980469 L 17.820312 3.9980469 L 12.841797 3.9980469 z M 13.035156 6.9980469 L 17.820312 6.9980469 L 21.273438 6.9980469 L 26.613281 6.9980469 C 29.385425 6.9980469 31.656541 8.678134 32.609375 11 L 19.820312 11 A 1.50015 1.50015 0 0 0 18.351562 12.191406 L 15.996094 23.371094 A 1.50015 1.50015 0 0 0 15.855469 24.035156 L 13.757812 34 L 7.3476562 34 L 13.035156 6.9980469 z M 21.037109 14 L 33.068359 14 C 33.044325 14.280128 33.006713 14.561571 32.945312 14.845703 L 32.78125 15.599609 C 31.908668 19.634872 28.35879 22.5 24.230469 22.5 L 19.246094 22.5 L 21.037109 14 z M 36.056641 14.160156 C 39.449348 14.913351 41.718962 18.266313 40.945312 21.845703 L 40.78125 22.599609 C 39.908668 26.634872 36.35879 29.5 32.230469 29.5 L 24.923828 29.5 A 1.50015 1.50015 0 0 0 23.455078 30.691406 L 21.283203 41 L 15.347656 41 L 16.443359 35.796875 L 16.449219 35.775391 A 1.50015 1.50015 0 0 0 16.451172 35.767578 L 18.613281 25.5 L 24.230469 25.5 C 29.754148 25.5 34.547425 21.631159 35.714844 16.232422 L 35.876953 15.478516 C 35.972548 15.036146 36.024967 14.597251 36.056641 14.160156 z"
      ></path>
    </svg>
  ),

  sunmoon: (props: LucideProps) => (
    <svg viewBox="10.9 10.9 78.2 78.2" {...props} xmlns="http://www.w3.org/2000/svg">
      <path
        fill="currentColor"
        d="M50,89.1c21.56,0,39.1-17.54,39.1-39.1S71.56,10.9,50,10.9c-21.56,0-39.1,17.54-39.1,39.1S28.44,89.1,50,89.1z M50,15.26  c19.16,0,34.74,15.58,34.74,34.74S69.16,84.74,50,84.74S15.26,69.16,15.26,50S30.84,15.26,50,15.26z"
      />
      <path
        fill="currentColor"
        d="M80.39,50c0-16.76-13.63-30.39-30.38-30.39v60.77C66.76,80.39,80.39,66.76,80.39,50z"
      />
    </svg>
  ),
  minimize: (props: LucideProps) => (
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" {...props}>
      <path
        fill="currentColor"
        d="M480 480H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h448c17.7 0 32 14.3 32 32s-14.3 32-32 32z"
      />
    </svg>
  ),
}

export const CustomIcon = ({
  name,
  size,
  className,
}: {
  name: (typeof CUSTOM_ICON_NAMES)[number]
  size: number
  className?: string
}) => {
  if (CUSTOM_ICON_NAMES.indexOf(name) === -1) {
    return <BoxSelect size={size} className={className} />
  }
  const IconComponent = Icons[name] as React.FC<LucideProps>
  return <IconComponent size={size} className={className} />
}
